/**
 * 类型定义入口文件
 * 统一导出所有类型定义
 */

// 导出API相关类型
export * from './api'

// 导出用户相关类型
export * from './user'

// 导出商品相关类型
export * from './product'

// 导出订单相关类型
export * from './order'

/**
 * 通用响应状态码
 */
export enum ResponseCode {
  /**
   * 成功
   */
  SUCCESS = 200,
  
  /**
   * 未授权
   */
  UNAUTHORIZED = 401,
  
  /**
   * 禁止访问
   */
  FORBIDDEN = 403,
  
  /**
   * 资源不存在
   */
  NOT_FOUND = 404,
  
  /**
   * 服务器错误
   */
  SERVER_ERROR = 500,
  
  /**
   * 参数错误
   */
  PARAM_ERROR = 400,
  
  /**
   * 业务错误
   */
  BUSINESS_ERROR = 10000
}

/**
 * 主题类型
 */
export type ThemeType = 'light' | 'dark' | 'auto'

/**
 * 布局类型
 */
export type LayoutType = 'side' | 'top' | 'mix'

/**
 * 内容宽度类型
 */
export type ContentWidthType = 'fixed' | 'fluid'

/**
 * 语言类型
 */
export type LocaleType = 'zh-CN' | 'en-US'

/**
 * 设备类型
 */
export enum DeviceType {
  /**
   * 移动设备
   */
  MOBILE = 'mobile',
  
  /**
   * 平板设备
   */
  TABLET = 'tablet',
  
  /**
   * 桌面设备
   */
  DESKTOP = 'desktop'
}

/**
 * 应用设置
 */
export interface AppSettings {
  /**
   * 主题
   */
  theme: ThemeType
  
  /**
   * 语言
   */
  locale: LocaleType
  
  /**
   * 主色调
   */
  primaryColor: string
  
  /**
   * 布局方式
   */
  layout: LayoutType
  
  /**
   * 内容区域宽度
   */
  contentWidth: ContentWidthType
  
  /**
   * 是否固定头部
   */
  fixedHeader: boolean
  
  /**
   * 是否固定侧边栏
   */
  fixedSidebar: boolean
  
  /**
   * 是否显示标签页
   */
  showTabs: boolean
  
  /**
   * 是否显示面包屑
   */
  showBreadcrumb: boolean
  
  /**
   * 是否显示页脚
   */
  showFooter: boolean
  
  /**
   * 菜单折叠状态
   */
  collapsed: boolean
  
  /**
   * 当前设备类型
   */
  deviceType: DeviceType
}

/**
 * 分页数据
 */
export interface Pagination {
  /**
   * 当前页码
   */
  current: number
  
  /**
   * 每页条数
   */
  pageSize: number
  
  /**
   * 总条数
   */
  total: number
  
  /**
   * 总页数
   */
  totalPages: number
}

/**
 * 排序方向
 */
export type SortOrder = 'ascend' | 'descend' | null

/**
 * 排序参数
 */
export interface SortParams {
  /**
   * 排序字段
   */
  field: string
  
  /**
   * 排序方向
   */
  order: SortOrder
}

/**
 * 过滤参数
 */
export interface FilterParams {
  [key: string]: any
}

/**
 * 表格参数
 */
export interface TableParams {
  /**
   * 分页参数
   */
  pagination: Pagination
  
  /**
   * 排序参数
   */
  sorter?: SortParams
  
  /**
   * 过滤参数
   */
  filters?: FilterParams
}

/**
 * 文件信息
 */
export interface FileInfo {
  /**
   * 文件ID
   */
  id: string | number
  
  /**
   * 文件名
   */
  name: string
  
  /**
   * 文件URL
   */
  url: string
  
  /**
   * 文件大小（字节）
   */
  size: number
  
  /**
   * 文件类型
   */
  type: string
  
  /**
   * 上传时间
   */
  uploadTime: string
}